/**
 * 
 */
package cn.biplam.front.html;

import cn.biplam.common.wrapper.ErrorMessage;
import cn.biplam.front.html.base.HtmlWindow;

/**
 * Html文本
 * @author 	WangSong 2009-4-6 下午03:02:36
 * @version 1.0
 */
public final class HtmlText extends HtmlWindow {
	
	private StringBuilder text=new StringBuilder();
	
	public HtmlText(){}

	/**
	 * 构造方法		传入对象的页面ID初始化
	 * @param ID	对象ID
	 */
	public HtmlText(String ID){
		super(ID);
	}

	/**
	 * 构造方法		传入对象的页面ID和文本初始化
	 * @param ID	对象ID
	 * @param cssID	样式表ID
	 */
	public HtmlText(String ID,String cssID){
		super(ID,cssID);
	}
	
	/**
	 * 构造方法 传入对象的页面ID、CSSID和文本初始化
	 * @param ID	页面ID
	 * @param cssID	样式表ID
	 * @param text	文本
	 */
	public HtmlText(String ID,String cssID,String text){
		super(ID,cssID);
		this.put(text);
	}

	/**
	 * 获取位于对象起始和结束标签内的 HTML
	 * @param sb 传入的写缓冲区
	 * @throws ErrorMessage
	 */
	protected void _getContent(StringBuilder sb) throws ErrorMessage {
		if(this.text.length()>0){
			sb.append(this.text.toString());
		}
	}

	/**
	 * 复制对象
	 * @return 创建的新对象实例
	 * @throws ErrorMessage
	 */
	public HtmlWindow copy() throws ErrorMessage {
		HtmlText htmltext = new HtmlText(this.getID(),this.getCssID());
		htmltext.text=this.text;
		super._copy(htmltext);
		return htmltext;
	}
	
	/**
	 * 获取对象及其内容的 HTML 形式(不包含客户端绑定脚本)
	 * @param sb 传入的写缓冲区
	 * @throws ErrorMessage
	 */
	public void getHtml(StringBuilder sb) throws ErrorMessage {
		sb.append("<DIV ");
		super.writeTagSetting(sb);
		sb.append(">");
		this.getContent(sb);
		sb.append("</DIV>\n");
	}
	
	/**
	 * 返回文本的字节Byte数量
	 * @return	字节数量
	 */
	public int length(){
		if(text!=null){
			return text.toString().getBytes().length;
		}else{
			return 0;
		}
	}

	/**
	 * 放入一段文本(追加)
	 * @param text
	 */
	public void put(String text){
		if(text!=null){
			this.text.append(text);
			super.setLength(this.length());
		}
	}
	
	/**
	 * 替换文本
	 * @param text
	 */
	public void replace(String text){
		StringBuilder sb = new StringBuilder();
		sb.append(text);
		this.text=sb;
		super.setLength(this.length());
	}

	/**
	 * @return the text
	 */
	public String getText() {
		return text.toString();
	}
	
}
